home *** CD-ROM | disk | FTP | other *** search
/ Delphi Magazine Collection 2001 / Delphi Magazine Collection 20001 (2001).iso / DISKS / Issue24 / clinic / CAPTUREU.PAS < prev    next >
Encoding:
Pascal/Delphi Source File  |  1997-04-28  |  1.6 KB  |  77 lines

  1. unit CaptureU;
  2.  
  3. interface
  4.  
  5. uses
  6.   WinProcs, WinTypes, Messages, SysUtils, Classes, Graphics, Controls, Forms,
  7.   Dialogs, StdCtrls, ExtCtrls;
  8.  
  9. type
  10.   TForm1 = class(TForm)
  11.     Img: TImage;
  12.     SaveDlg: TSaveDialog;
  13.     LoadDlg: TOpenDialog;
  14.     Panel1: TPanel;
  15.     Button1: TButton;
  16.     Button2: TButton;
  17.     Button3: TButton;
  18.     procedure Button1Click(Sender: TObject);
  19.     procedure Button2Click(Sender: TObject);
  20.     procedure Button3Click(Sender: TObject);
  21.   private
  22.     { Private declarations }
  23.   public
  24.     { Public declarations }
  25.   end;
  26.  
  27. var
  28.   Form1: TForm1;
  29.  
  30. implementation
  31.  
  32. {$R *.DFM}
  33.  
  34. procedure TForm1.Button1Click(Sender: TObject);
  35. const
  36.   NumColors = 256;
  37. var
  38.   R: TRect;
  39.   C: TCanvas;
  40.   LP: PLogPalette;
  41.   Size: Integer;
  42. begin
  43.   R := Img.BoundsRect;
  44.   C := TCanvas.Create;
  45.   C.Handle := GetDC(HWnd_Desktop);
  46.   try
  47.     Img.Canvas.CopyRect(R, C, R);
  48.     Size := SizeOf(TLogPalette) + (Pred(NumColors) * SizeOf(TPaletteEntry));
  49.     LP := AllocMem(Size);
  50.     try
  51.       LP^.palVersion := $300;
  52.       LP^.palNumEntries := NumColors;
  53.       GetSystemPaletteEntries(C.Handle, 0, NumColors, LP^.palPalEntry);
  54.       Img.Picture.Bitmap.Palette := CreatePalette(LP^);
  55.     finally
  56.       FreeMem(LP, Size);
  57.     end
  58.   finally
  59.     ReleaseDC(HWnd_Desktop, C.Handle);
  60.     C.Free;
  61.   end;
  62. end;
  63.  
  64. procedure TForm1.Button2Click(Sender: TObject);
  65. begin
  66.   if SaveDlg.Execute then
  67.     Img.Picture.Bitmap.SaveToFile(SaveDlg.FileName)
  68. end;
  69.  
  70. procedure TForm1.Button3Click(Sender: TObject);
  71. begin
  72.   if LoadDlg.Execute then
  73.     Img.Picture.Bitmap.LoadFromFile(LoadDlg.FileName)
  74. end;
  75.  
  76. end.
  77.